package 代码记录.Bit48天集训;

import java.util.Scanner;

/**1.五子棋(这道题应该是回溯搜索矩阵类题,等把搜索矩阵做了,来做一下)
 * 2.计算器(leetcode-150：逆波兰表达式)(自己做出来了)
 * @author zx
 * @create 2022-07-01 8:46
 */
public class day_41 {
    public static void main4(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            char[][] chess = new char[20][20];
            for(int i = 0;i < 20;i++){
                String line = sc.nextLine();
                for(int j = 0;j < 20;j++){
                    chess[i][j] = line.charAt(j);
                }
            }
            if(judge(chess)){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
        }
    }
    private static boolean judge(char[][] chess){
        return true;
    }

    /**
     * 还就内个暴力解法
     * 遍历棋盘，判断棋子的四个方向（右、右下、下、左下）
     * @param args
     */
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String[] checkerboard = new String[20];
            for(int i = 0; i < 20; i++){
                checkerboard[i] = sc.next();
            }
            boolean result = false;
            for(int i = 0; i < 20; i++){
                for(int j = 0; j < 20; j++){
                    if(checkerboard[i].charAt(j) != '.'){
                        if(j < 16 && checkerboard[i].charAt(j) == checkerboard[i].charAt(j+1)
                                && checkerboard[i].charAt(j) == checkerboard[i].charAt(j+2)
                                && checkerboard[i].charAt(j) == checkerboard[i].charAt(j+3)
                                && checkerboard[i].charAt(j) == checkerboard[i].charAt(j+4)){
                            result = true;
                        }
                        if(i < 16 && j < 16 && checkerboard[i].charAt(j) == checkerboard[i+1].charAt(j+1)
                                && checkerboard[i].charAt(j) == checkerboard[i+2].charAt(j+2)
                                && checkerboard[i].charAt(j) == checkerboard[i+3].charAt(j+3)
                                && checkerboard[i].charAt(j) == checkerboard[i+4].charAt(j+4)){
                            result = true;
                        }
                        if(i < 16 && checkerboard[i].charAt(j) == checkerboard[i+1].charAt(j)
                                && checkerboard[i].charAt(j) == checkerboard[i+2].charAt(j)
                                && checkerboard[i].charAt(j) == checkerboard[i+3].charAt(j)
                                && checkerboard[i].charAt(j) == checkerboard[i+4].charAt(j)){
                            result = true;
                        }
                        if(i < 16 && j > 3 && checkerboard[i].charAt(j) == checkerboard[i+1].charAt(j-1)
                                && checkerboard[i].charAt(j) == checkerboard[i+2].charAt(j-2)
                                && checkerboard[i].charAt(j) == checkerboard[i+3].charAt(j-3)
                                && checkerboard[i].charAt(j) == checkerboard[i+4].charAt(j-4)){
                            result = true;
                        }
                    }
                }
            }
            if(result){
                System.out.println("Yes");
            }
            else{
                System.out.println("No");
            }
        }
    }


    /**
     * 人家好的做法,但是自己看不懂
     */
    static int[][] direction = {{0, 1}, {0, - 1}, {1, 0}, { - 1, 0}, {1, 1}, {1, - 1}, { - 1, 1}, { - 1, - 1}};
    public static void main2(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            Character[][] map = new Character[20][20];
            for (int i = 0; i < 20; i ++ ) {
                String s = sc.next();
                for (int j = 0; j < 20; j ++ ) {
                    map[i][j] = s.charAt(j);
                }
            }
            if(check(map)) System.out.println("Yes");
            else System.out.println("No");
        }
    }
    public static boolean check(Character[][] map) {
        for (int i = 0; i < 20; i ++ ) {
            for (int j = 0; j < 20; j ++ ) {
                if(map[i][j] == '*' || map[i][j] == '+') {
                    for (int k = 0; k < 8; k ++ ) {
                        int count = 1;
                        int x = i + direction[k][0];
                        int y = j + direction[k][1];
                        while (x >= 0 && x < 20 && y >= 0 && y < 20 && map[x][y] == map[i][j]) {
                            count ++ ;
                            x += direction[k][0];
                            y += direction[k][1];
                        }
                        if(count == 5) return true;
                    }
                }
            }
        }
        return false;
    }
}
